﻿//
// MudTools.OfficeInterop 项目的版权、商标、专利和其他相关权利均受相应法律法规的保护。使用本项目应遵守相关法律法规和许可证的要求。
//
// 本项目主要遵循 MIT 许可证和 Apache 许可证（版本 2.0）进行分发和使用。许可证位于源代码树根目录中的 LICENSE-MIT 和 LICENSE-APACHE 文件。
//
// 不得利用本项目从事危害国家安全、扰乱社会秩序、侵犯他人合法权益等法律法规禁止的活动！任何基于本项目二次开发而产生的一切法律纠纷和责任，我们不承担任何责任！

namespace MudTools.OfficeInterop.Imps;
internal class OfficeCommandBarPopup : OfficeCommandBarControl, IOfficeCommandBarPopup
{
    private MsCore.CommandBarPopup _popup;

    public IOfficeCommandBarControls Controls => new OfficeCommandBarControls(_popup.Controls);

    public new bool Enabled
    {
        get => _popup.Enabled;
        set => _popup.Enabled = value;
    }

    public new string Caption
    {
        get => _popup.Caption;
        set => _popup.Caption = value;
    }

    public new IOfficeCommandBar CommandBar => new OfficeCommandBar(_popup.CommandBar);

    public new bool Visible
    {
        get => _popup.Visible;
        set => _popup.Visible = value;
    }

    public new bool BeginGroup => _popup.BeginGroup;

    public bool BuiltIn => _popup.BuiltIn;

    internal OfficeCommandBarPopup(MsCore.CommandBarPopup popup) : base(popup)
    {
        _popup = popup ?? throw new ArgumentNullException(nameof(popup));
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing && _popup != null)
        {
            try
            {
                Marshal.ReleaseComObject(_popup);
            }
            catch { }
            _popup = null;
            _control = null;
        }
        base.Dispose(disposing);
    }
}